iT邦幫忙

2024 iThome 鐵人賽

DAY 8
1
Python

從概念到應用:Python實戰開發學習之旅系列 第 8

[Day7] 脫離第一周新手村,邁向進階程式工程師 - Python新手畢業小型應用專案

  • 分享至 

  • xImage
  •  

本日目標

今天是我們新手周的最後一天,我會把前面學習的東西再做一次稍微複雜一點的範例應用
我們今天會複習到

1.基本型別
2.流程控制(條件式、迴圈)
3.改善的tips
4.再次透過邏輯思考方式設計專案

如果有跟day0~7的第一周朋友
恭喜各位
我們即將從懵懂不知道從何下手的萌新
變成坐在電腦前的宅宅(X)
變成可以思考問題在哪?如何實作?是否更好? - 進入到IT工程師的大門了

至於如何進階?如何當管理系統架構?
需要時間跟經歷累積實力去培養~

https://ithelp.ithome.com.tw/upload/images/20240922/201210523XmnZEnH2m.jpg

專案設計 - 改善前面的學校成績系統

Step1 需求探討

老話一句,我們在設計程式之前
一定要先思考用戶的需求在哪?為何而做?
如果能多一點站在對方的角度去思考或關心
這也是建立工程團隊跟使用者端的信賴喔/images/emoticon/emoticon47.gif

本系統的目的
在流程控制章節,我們學會依照分數的級距來打ABC這些符號
我們在經過腦內風暴(假想自己是老師跟學生)
https://ithelp.ithome.com.tw/upload/images/20240922/20121052ip68Yc6xhc.png
我們總結出來的要求是

  1. 區分文組跟理組,並且紀錄成績
  2. 文組:國文、英文、社會,理組:英文、數學、自然
  3. 要給User(學生)輸入組別後再輸入分數
  4. 如果判斷不到60分要提醒加油喔之類的心靈雞湯
  5. 最後把整份資料印出來

Step1 分析與設計系統

經過上面的需求我們可以定義

分析一資料的格式
1.組別: 可以使用字串表示,搭配條件判斷來分。
2.各組別的不同科目:可以用List來儲存。["國文"","社會","英文"]
3.儲存各科目的分數可以用Dict來儲存 => 大家可以想像{"國文":90,"社會":50}

分析二使用情境流程
這段程式碼可以轉換成一個流程圖,說明程式的執行步驟:

1.開始
2.輸入組別(理組或文組)

  • 如果是「理組」,科目是 英文、數學、自然
  • 如果是「文組」,科目是 國文、英文、社會
  • 如果輸入錯誤組別,顯示錯誤訊息並結束程式
    3.輸入每個科目的分數(範圍:0~100)
  • 若分數不在範圍內,顯示錯誤訊息並結束程式
  1. 判定分數等級:
  • 分數 ≥ 90: Excellent
  • 分數 ≥ 75 且 < 90: Good
  • 分數 ≥ 60 且 < 75: Average
  • 分數 < 60: Fail
    5.顯示結果
    6.如果某科目等級為「Fail」,會顯示鼓勵的訊息
    7.結束

畫出流程圖吧
https://ithelp.ithome.com.tw/upload/images/20240922/20121052YH1u13SvAd.png

這樣是不是越來越有fu
可以感受到分析跟畫流程圖的感受了呢?/images/emoticon/emoticon01.gif

Step3 程式碼撰寫

有了資料流程
我們就可以實作程式了

# 取得組別
group = input("請選擇你的組別 (理組 / 文組): ")

# 根據組別選擇相應的科目
if group == "理組":
    subjects = ["英文", "數學", "自然"]
elif group == "文組":
    subjects = ["國文", "英文", "社會"]
else:
    print("組別輸入錯誤!請重新執行程式。")
    exit()

# 儲存每個科目的成績
scores = {}

# 輸入各科的分數
for subject in subjects:
    score = int(input(f"請輸入 {subject} 的分數 (0~100): "))
    if 0 <= score <= 100:
        scores[subject] = score
    else:
        print("分數輸入錯誤!請輸入 0 到 100 之間的數字。")
        exit()

# 顯示結果
print("\n--- 成績報告 ---")
for subject, score in scores.items():
    if score >= 90:
        grade = "Excellent"
    elif score >= 75:
        grade = "Good"
    elif score >= 60:
        grade = "Average"
    else:
        grade = "Fail"

    print(f"{subject}: {score} 分, 等級: {grade}")

    # 如果成績不及格,給予鼓勵的話語
    if grade == "Fail":
        print(f"加油!{subject} 科目需要更多努力,但你可以做到的!")

print("\n你的組別是:", group)

小技巧
exit()是python中的退出執行程式的方法

https://ithelp.ithome.com.tw/upload/images/20240922/20121052evWmhg1vqb.png

這邊也驗證我們程式邏輯正確
太棒了~!! 灑花/images/emoticon/emoticon51.gif

總結

恭喜各位學習完後
就可以從第一周的基礎畢業了

今天我們嘗試把前面流程控制的技能翻新強化
我們也學到了程式的脈絡跟整合應用
1.條件(if,else) : 幫助判斷程式走的方縣
2.迴圈: 幫助重複執行特定功能或是把資料每個都搜尋一遍

期待大家都可以培養邏輯思考而進步~
接下來
下一周就會挑戰進階的語法教學摟~

第二周學習重點預告

  1. Function,Class 重複利用及物件導向的觀念培養
  2. 模組化的管理
  3. 引用外部套件的技巧

上一篇
[Day6] 流程控制的另一個好夥伴(迴圈) - 迴圈不會停,電腦又當機
下一篇
[Day8] 第二周 - 脫離新手,朝向工程師之路的開端
系列文
從概念到應用:Python實戰開發學習之旅31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言